package Gestor;

import Clases.VacacionPagada;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;

public class GestorVacacionesPagadas extends GestorBase {

    private static GestorVacacionesPagadas instancia = null;

    public static GestorVacacionesPagadas obtenerInstancia() {
        if (instancia == null) {
            instancia = new GestorVacacionesPagadas();
        }
        return instancia;
    }

    @Override
    public Object insertar(Object vacacionPagada) {
        Integer numVacacion = null;
        boolean error = false;
        try {

            iniciaOperacion();
            Object verificacionVacacion = sesion.createSQLQuery("select * from vacacion_pagada where id= :?")
                    .setParameter("?", ((VacacionPagada) vacacionPagada).getId())
                    // .setParameter("fech", ((Vacacion) vacacion).getId().getFecha())
                    .uniqueResult();
            if (verificacionVacacion == null) {
                numVacacion = (Integer) sesion.save(vacacionPagada);
                tx.commit();
                error = true;
            }
        } catch (HibernateException he) {
            System.err.println(he.getCause());
            System.err.println(he.getMessage());
            error = false;
            manejaExcepcion(he);
        } finally {
            sesion.close();
        }

        return error;
    }

    public List<VacacionPagada> getVacacionesPorNumEmpleado(Long numEmple) {
        List<VacacionPagada> listaVacacionesPagadas = null;
        String consulta = "select * from vacacion_Pagada where num_Empleado=:?";
        try {
            iniciaOperacion();
            listaVacacionesPagadas = (ArrayList<VacacionPagada>) sesion.createSQLQuery(consulta).addEntity(VacacionPagada.class)
                    .setParameter("?", numEmple)
                    .list();

        } finally {
            sesion.close();
        }

        return listaVacacionesPagadas;

    }

    public boolean eliminar(Object Vacacion) {
        // int numEmpleado=(Vacacion)Vacacion).
        boolean exito = false;
        try {
            iniciaOperacion();
            int filas = sesion.createSQLQuery("DELETE FROM bono WHERE codigo= :? AND fecha= :?")
                    //    .setParameter("?", numEmpleado)
                    // .setParameter("?", fecha)
                    .executeUpdate();
            if (filas >= 1) {
                exito = true;
                tx.commit();
            }
        } catch (HibernateException he) {
            manejaExcepcion(he);

        } finally {
            sesion.close();
        }
        return exito;
    }
}
